#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 版权所有 (c) 2025   保留所有权利。
 * CLR版本：4.0.30319.42000
 * 机器名称：DESKTOP-GLJ2Q8J
 * 公司名称：
 * 命名空间：Npoi.ExcelOperate.Standard
 * 唯一标识：40dfe9ad-428e-4af8-a86c-2e81736aeac9
 * 文件名：IGetModel
 * 当前用户域：DESKTOP-GLJ2Q8J
 * 
 * 创建者： Guo_79991
 * 电子邮箱：799919859@qq.com
 * 创建时间：2025/10/9 21:17:29
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using System;
using System.Collections.Generic;

namespace Npoi.ExcelOperate.Standard
{
    /// <summary>
    /// IGetModel 的摘要说明
    /// </summary>

    /// <summary>
    /// 泛型接口,获取List集合
    /// </summary>
    /// <typeparam name="TModel"></typeparam>
    public interface IGetList<TModel>
    {
        /// <summary>
        /// 泛型方法,获取List集合
        /// </summary>
        /// <returns></returns>
        List<TModel> GetList();
    }

    /// <summary>
    /// 获得单一模型
    /// </summary>
    /// <typeparam name="TModel"></typeparam>
    public interface IGetModel<TModel>
    {
        TModel GetModel();
    }

    /// <summary>
    /// 获得字典对象
    /// </summary>
    /// <typeparam name="TModel"></typeparam>
    public interface IGetDic<TModel>
    {
        /// <summary>
        /// 获取字典
        /// </summary>
        /// <returns></returns>
        Dictionary<string, TModel> GetDic();
    }

    /// <summary>
    /// Excel写入接口
    /// </summary>
    /// <typeparam name="TModel"></typeparam>
    public interface IWriteExcel<TModel>
    {
        /// <summary>
        /// 写入数据到Excel
        /// </summary>
        /// <param name="data">要写入的数据</param>
        /// <returns>是否成功</returns>
        bool WriteData(TModel data);

        /// <summary>
        /// 写入列表数据到Excel
        /// </summary>
        /// <param name="dataList">要写入的数据列表</param>
        /// <returns>是否成功</returns>
        bool WriteListData(List<TModel> dataList);
    }

    /// <summary>
    /// Excel删除接口
    /// </summary>
    public interface IDeleteExcel
    {
        /// <summary>
        /// 删除指定行
        /// </summary>
        /// <param name="sheetIndex">Sheet索引</param>
        /// <param name="rowIndex">要删除的行索引</param>
        /// <returns>是否成功</returns>
        bool DeleteRow(int sheetIndex, int rowIndex);

        /// <summary>
        /// 删除指定Sheet页
        /// </summary>
        /// <param name="sheetIndex">要删除的Sheet索引</param>
        /// <returns>是否成功</returns>
        bool DeleteSheet(int sheetIndex);
    }

    /// <summary>
    /// Excel修改接口
    /// </summary>
    public interface IUpdateExcel
    {
        /// <summary>
        /// 修改指定单元格的值
        /// </summary>
        /// <param name="sheetIndex">Sheet索引</param>
        /// <param name="rowIndex">行索引</param>
        /// <param name="cellIndex">列索引</param>
        /// <param name="newValue">新值</param>
        /// <returns>是否成功</returns>
        bool UpdateCellValue(int sheetIndex, int rowIndex, int cellIndex, object newValue);
    }
}